package co.com.travelsoft.client;

import java.util.ArrayList;
import java.util.List;

import co.com.travelsoft.shared.CiudadDTO;
import co.com.travelsoft.shared.PaqueteTuristicoDTO;
import co.com.travelsoft.shared.TsWebException;

import com.google.gwt.user.client.rpc.AsyncCallback;



/**
 * Clase que sirve de proxy para consultar los datos al lado del servidor
 * @author Juan Carlos Cardona
 * @since  14/06/2014
 * @version 1.0
 */
public class ProxyData {

	
	private static List<PaqueteTuristicoDTO> ptList;
	
	private static List<CiudadDTO> ciudadesList;
	
	
	
	
	/**
	 * Lista de paquetes turisticos
	 * @return
	 * @throws TsWebException 
	 */
	public static List<PaqueteTuristicoDTO> getPaquetesTuristicos() throws TsWebException {

	    if(ptList==null){
		ptList = new ArrayList<PaqueteTuristicoDTO>();
		PaqueteTuristicoServiceWeb.Util.getInstance().getPaqueteTuristicosList(new AsyncCallback<List<PaqueteTuristicoDTO>>() {
		    @Override
		    public void onSuccess(List<PaqueteTuristicoDTO> result) {
			ptList.addAll(result);
		    }

		    @Override
		    public void onFailure(Throwable e) {
			throw new RuntimeException(e);
		    }
		});
              getCiudadesDTO();
	    }
	    return ptList;
	}
	
	
	/**
	 * Lista de paquetes turisticos
	 * @return
	 * @throws TsWebException 
	 */
	public static List<CiudadDTO> getCiudadesDTO() throws TsWebException {

	    if(ciudadesList==null){
		ciudadesList = new ArrayList<CiudadDTO>();
		PaqueteTuristicoServiceWeb.Util.getInstance().getCiudadesDTO(new AsyncCallback<List<CiudadDTO>>() {
		    @Override
		    public void onSuccess(List<CiudadDTO> result) {
			ciudadesList.addAll(result);
		    }

		    @Override
		    public void onFailure(Throwable e) {
			throw new RuntimeException(e);
		    }
		});
		
	    }
	    return ciudadesList;
	}


	/**
	 * Actualiza un paquete turistico
	 * @param dto
	 */
	public static void actualizarPaqueteTurisitico(PaqueteTuristicoDTO dto) {
	    PaqueteTuristicoServiceWeb.Util.getInstance().actualizarPaqueteTurisitico(dto,new AsyncCallback<Void>() {
		@Override
		public void onFailure(Throwable caught) {
		}

		@Override
		public void onSuccess(Void result) {
		}
	    
	    });
	    
	}


	public static void guardarPaqueteTuristico(PaqueteTuristicoDTO dto) {
	    PaqueteTuristicoServiceWeb.Util.getInstance().guardarPaqueteTuristico(dto,new AsyncCallback<Void>() {
		@Override
		public void onFailure(Throwable caught) {
		}

		@Override
		public void onSuccess(Void result) {
		}
	    
	    });
	    
	}
}
